package com.ruoyi.sms.service;

import com.ruoyi.bizsys.domain.*;
import com.ruoyi.bizsys.vo.MonnifyReservedAccount;
import com.ruoyi.sms.domain.SmsSendData;
import com.ruoyi.sms.domain.SmsSendReq;
import com.ruoyi.sms.domain.SmsSendVo;

import java.util.List;

/**
 * @Author: Jamnsin
 * @Date: 2021/1/13 3:53 下午
 */
public interface ISmsService {

    /**
     * 发送验证码
     *
     * @param smsReq
     * @param checkInterval 是否检查发送的时间间隔 正常情况下都要:true
     * @return
     */
    SmsSendData sendVerifyCode(SmsSendReq smsReq, boolean checkInterval);

    /**
     * 短信发送同步方法，需要异步发送请移步 AsyncService.sendSms
     *
     * @param smsData
     * @return
     */
    int sendSms(SmsSendData smsData);

    List<VerifyCodeLog> verifyCodeLogCurDate(VerifyCodeLog verifyCodeLog);

    void verifySmsCode(SmsSendVo smsVo);

    String getSmsContnet(SmsSendData smsData);

    /**
     * 发送whatsApp 验证码
     */
    SmsSendData sendWhatsAppVerifyCode(SmsSendReq smsReq);

    /**
     * 发送枫软 语音验证码
     *
     * @param smsReq
     * @return
     */
    SmsSendData sendFengRuanVoiceOtp(SmsSendReq smsReq);

    /**
     * 校验whatsApp 验证码
     *
     * @param smsData
     * @return
     */
    boolean verifyWhatsAppCode(SmsSendData smsData);

    /**
     * 批量发送短信
     */
    void sendBatchSms(List<SmsTask> smsTaskList);

    /**
     * 检查用户手机号是否注册
     *
     * @param userId 用户Id
     */
    void chenkPhone(String userId);

    int sendRepaymentPassSms(String custNo, AppUser appUser);

    //int sendRepaymentSms(LoanIou loanIou, RealNameAuth realNameAuth, int iouStatus);

    void sendDelayProductSms(LoanIou loanIou, RepaymentOrder repaymentOrder, String type, String repayDate, MonnifyReservedAccount monnifyReservedAccount);
//
//    int sendRepaymentSms(LoanIou loanIou, RealNameAuth realNameAuth, int loanIouStatusWait, MonnifyReservedAccount monnifyReservedAccount);
}
